const { PARAMS_INCORRECT } = require("../config/error-constants")
const momentServeice = require("../service/moment.serveice")

class MomentController {
  async create(ctx, next) {
    // 1.获取动态的内容
    const { content } = ctx.request.body
    if (!content) {
      ctx.errorParams = ["content"]
      return ctx.app.emit("error", PARAMS_INCORRECT, ctx)
    }
    // 2.动态由谁发布, ctx上的user来自token的解析,解析后将结果通过ctx.user = 解析结果传过来
    const { id } = ctx.user
    // 3.将发表的动态保存到数据库
    const result = await momentServeice.create(content, id)
    ctx.body = {
      code: 0,
      message: "创建用户动态成功~",
      data: result,
    }
  }

  // 删除动态
  async remove(ctx, next) {
    const { momentId } = ctx.params
    if (!momentId) {
      ctx.errorParams = ["momentId"]
      return ctx.app.emit("error", PARAMS_INCORRECT, ctx)
    }
    const result = await momentServeice.remove(momentId)
    ctx.body = {
      code: 0,
      message: "删除动态成功~",
      data: result,
    }
  }

  // 获取动态列表
  async list(ctx, next) {
    const { size, offset } = ctx.query
    // 去数据库查询列表
    const result = await momentServeice.queryList(size, offset)

    ctx.body = {
      code: 0,
      data: result,
    }
  }

  // 获取动态详情
  async detail(ctx, next) {
    // 1.获取动态id
    const { momentId } = ctx.params
    // 2.根据id查询动态详情
    const [result] = await momentServeice.queryById(momentId)
    // 3.返回数据
    ctx.body = {
      code: 0,
      data: result,
    }
  }

  // 更新动态
  async update(ctx, next) {
    // 1.获取动态id
    const { momentId } = ctx.params
    // 2.获取修改后的动态
    const { content } = ctx.request.body
    if (!momentId || !content) {
      ctx.errorParams = ["content", "momentId"]
      return ctx.app.emit("error", PARAMS_INCORRECT, ctx)
    }
    // 3.去数据库修改
    const result = await momentServeice.update(content, momentId)
    ctx.body = {
      code: 0,
      message: "更新动态成功~",
      data: result,
    }
  }
}

module.exports = new MomentController()
